package com.tuanzi.loan.business.service.family;

import com.tuanzi.loan.core.vo.PageSearcher;
import com.tuanzi.loan.vo.request.family.BusinessPrepaymentSearchRequest;
import com.tuanzi.loan.vo.request.family.PartnerBalanceSearchRequest;
import com.tuanzi.loan.vo.response.family.BusinessPrepaymentSearchResponse;
import com.tuanzi.loan.vo.response.family.PartnerBalanceSearchResponse;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 甲方预付费充值
 * @author JinRuiyang
 */
public interface FirstPartyPrepaymentService {

    /**
     * 创建商务充值
     * @param businessPrepayment 模板ID，合作方名，点击单价, 充值金额, 操作人
     * @return 结果
     */
    Integer create(BusinessPrepaymentSearchRequest businessPrepayment);

    /**
     * 更新山商务充值
     * @param businessPrepayment 模板ID，合作方名，操作人，点击单价
     * @return 结果
     */
    Integer update(BusinessPrepaymentSearchRequest businessPrepayment);

    /**
     * 充值,添加充值记录，更新商务充值的操作人信息
     * 充值金额可为负数,但余额不可为负数
     * 更新活动状态
     * @param businessPrepayment 模板ID，合作方名, 充值金额, 操作人
     * @return 结果
     */
    Integer recharge(BusinessPrepaymentSearchRequest businessPrepayment);

    /**
     * 禁用商务充值
     * @param modelId 模板ID
     * @return 结果
     */
    Integer disable(Long modelId);

    /**
     * 禁用商务充值
     * @param modelId 模板ID
     * @return 结果
     */
    Integer enable(Long modelId);

    /**
     * 批量禁用商务充值
     * @param modelIds 模板ID列表
     */
    void batchDisable(List<Long> modelIds);

    /**
     * 批量禁用商务充值
     * @param modelIds 模板ID列表
     */
    void batchEnable(List<Long> modelIds);

    /**
     * 获取商务充值余额
     * @param modelId 模板ID
     * @return 充值金额
     */
    Double getPrepaymentBalance(Long modelId);

    /**
     * 商务充值查询
     * @param pageSearcher 模板ID，合作方名
     * @return 响应列表
     */
    Page<BusinessPrepaymentSearchResponse> listBusinessPrepayment(PageSearcher<BusinessPrepaymentSearchRequest> pageSearcher);

    /**
     * 合作方余额查询
     * @param pageSearcher 开始时间，结束时间，模板ID，合作方名
     * @return 响应列表
     */
    Page<PartnerBalanceSearchResponse> listPartnerBalance( PageSearcher<PartnerBalanceSearchRequest> pageSearcher);
}
